package Review.ArrayList;

import java.util.Arrays;

public class MyArrayList {
    public int[] arr;
    public int usedSize;//有效的元素个数
    public  MyArrayList(){
        this.arr = new int[10];
    }
    //打印顺序表
    public void display(){
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
        System.out.println();
    }
    // 获取顺序表长度
    public int size(){
        return this.usedSize;
    }
    //判断顺序表是不是满了
    public boolean isFull(){
        return arr.length==usedSize;
    }
    //扩容
    public void grow(){
        this.arr = Arrays.copyOf(arr,2*arr.length);
    }
    // 在 pos 位置新增元素
    public  void add(int pos,int data){
        if (isFull()){
            grow();
        }
        if (pos < 0 || pos > usedSize){
            System.out.println("pos的位置不合法");
        }
        for (int i = usedSize-1; i >=pos ; i--) {
            arr[i+1] = arr[i];
        }
        arr[pos] =data;
        usedSize++;
    }
    // 判定是否包含某个元素
    public boolean contain(int key){
        for (int i = 0; i < usedSize; i++) {
            if (arr[i]==key){
                return true;
            }
        }
        return false;
    }
    // 查找某个元素对应的位置
    public int search(int data){
        for (int i = 0; i < usedSize; i++) {
            if (arr[i]==data){
                return i;
            }
        }
        return -1;
    }
    // 获取 pos 位置的元素
    public int getPos(int pos){
        if (pos <0 || pos > usedSize){
            System.out.println("pos位置不合法，找不到");
            return -1;
        }
        return arr[pos];
    }
    //判断顺序表是不是为空
    public boolean isEmpty(){
        return this.usedSize==0;
    }
    // 给 pos 位置的元素更新为 value
    public int Upset(int pos,int value){
        if (pos <0 || pos >usedSize){
            System.out.println("pos的位置不合法，找不到");
            return -1;
        }
        return arr[pos] = value;
    }
    //删除第一次出现的关键字key
    public void remove(int data){
        if (isEmpty()){
            System.out.println("顺序表为空");
            return;
        }
        int index = search(data);
        if (index==-1){
            System.out.println("找不到要删除的元素");
            return;
        }
        for (int i = index; i <usedSize-1 ; i++) {
            arr[i] = arr[i+1];
        }
        usedSize--;
    }
    // 清空顺序表
    public void clear(){
        this.usedSize=0;
    }
}
